/*
 * AltoSettings.h
 *
 *  Created on: 2009/02/12
 *      Author: Yongshik Cho
 */

#ifndef ALTOSETTINGS_H_
#define ALTOSETTINGS_H_

#include "../core/Prerequisites.h"
#include "../device/DeviceSettings.h"
#include <tinyxml.h>


class AltoSettings
{
public:
	static const String _DEFAULT_SETTINGS_FILE;

	static const std::string _SETTINGS_TAG;
	static const std::string _VENDOR_TAG;
	static const std::string _VERSION_TAG;
	static const std::string _RENDERER_TAG;
	static const std::string _RENDER_DEVICE_TAG;
	static const std::string _AUDIO_DEVICE_TAG;
	static const std::string _TITLE_TAG;
	static const std::string _POSX_TAG;
	static const std::string _POSY_TAG;
	static const std::string _WIDTH_TAG;
	static const std::string _HEIGHT_TAG;
	static const std::string _BITSPIXEL_TAG;
	static const std::string _FULLSCREEN_TAG;
	static const std::string _RESIZABLE_TAG;
	static const std::string _VREFRESH_TAG;
	static const std::string _LOGGING_TAG;
	static const std::string _CONTROL_POINT_SIZE_TAG;
	static const std::string _CONTROL_POINT_COLOR_TAG;
	static const std::string _CENTER_POINT_SIZE_TAG;
	static const std::string _CENTER_POINT_COLOR_TAG;
	static const std::string _COLLIDABLE_COLOR_TAG;
	static const std::string _COLLIDABLE_POINT_SIZE_TAG;
	static const std::string _COLLIDABLE_POINT_COLOR_TAG;
	static const std::string _ORIGIN_POINT_SIZE_TAG;
	static const std::string _ORIGIN_POINT_COLOR_TAG;
	static const std::string _ATTACHMENT_POINT_SIZE_TAG;
	static const std::string _ATTACHMENT_POINT_COLOR_TAG;

	static const std::string _DIRECTX9_TAG;
	static const std::string _OPENGL_TAG;
	static const std::string _OPENAL_TAG;
	static const std::string _TRUE_TAG;
	static const std::string _FALSE_TAG;


public:
	static DeviceSettings* readSettings();
	static void writeSettings(DeviceSettings* settings);

private:
	static DeviceSettings* parseSettings(TiXmlElement* element);
};

#endif /* ALTOSETTINGS_H_ */
